package com.is.util;

import java.sql.Date;
import javax.servlet.http.*;



/**
 * 本对象为给其他Java文件传送 HttpServletRequest的对象值的方法
 * @author 邹志荣
 *
 */
public class ParamUtil {
	
	/**author：邹志荣
	 * 还原字符过滤
	 * @param temp
	 * @return
	 */
	public static String showCheckString(String temp)
	{
		temp = temp;//还原非法字符
		System.out.println(temp);
		//取消<pre></pre>，用于在修改内容时textarea中不会显示出<pre>和</pre>
		if(temp.indexOf("<pre>")>=0&&temp.indexOf("</pre>")>=0)//第一个为0，没有为-1;
		{
			System.out.println("修改---替换<pre></pre>");
			temp = temp.replaceAll("<pre>", " ");
			temp = temp.replaceAll("</pre>", " "); 
		}
		return temp; 
	}
	
	
	
	/**author：邹志荣
	 * 获得给出request对象的参数的值
	 * 
	 * @param request
	 *            请求对象
	 * @param paramName
	 *            请求对象的参数名
	 * @return
	 */
	public static String getString(HttpServletRequest request, String paramName) {
		String temp = request.getParameter(paramName);
		
		if (temp != null && !temp.equals(""))
			return temp;//过滤
		else
			return null;
	}

	/**author：邹志荣
	 * 带有默认值的方法
	 * 
	 * @param request
	 *            请求对象
	 * @param paramName
	 *            当此为空的时候，返回默认值<code>defaultString</code>
	 * @param defaultString
	 *            默认值
	 * @return
	 */
	public static String getString(HttpServletRequest request, String paramName, String defaultString) {
		String temp = getString(request, paramName);
		
		if (temp == null)
			temp = defaultString;
		else
		{
			if(temp.indexOf("\r\n")>=0)//判断是否包含回车，有的话就说明是处理textarea提交的内容，如果是字符串的\r\n的形式为：\\r\\n，html进行了转义
			{
				System.out.println("****************request得到的字符串中包含换行");
				if(temp.indexOf("<pre>")>0&&temp.indexOf("</pre>")>0)
				{
					System.out.println("+++++++++++request得到的字符串中包含过滤");
				}
				else
				{
					System.out.println("-----------request得到的字符串中不包含过滤");
					temp = "<pre>"+checkString(temp)+"</pre>";
				}
			}
			else
			{
				//System.out.println("///////////////////request得到的字符串中不包含换行");
			}
		}	
		
		return temp;//过滤
	}

	/**
	 * 返回有request携带的Integer的值
	 * 
	 * @param request
	 * @param paramName
	 * @return
	 * @throws NumberFormatException
	 */
	public static int getInt(HttpServletRequest request, String paramName) throws NumberFormatException {
		return Integer.parseInt(getString(request, paramName));
	}

	/**
	 * 带有默认值的方法
	 * 
	 * @param request
	 * @param paramName
	 * @param defaultInt
	 * @return
	 */
	/*public static int getInt(HttpServletRequest request, String paramName, int defaultInt) {
		try {
			String temp = getString(request, paramName); //request.getParamter

			if (temp == null)
				return defaultInt;
			else
				return Integer.parseInt(temp);

		} catch (NumberFormatException e) {
			return defaultInt;
		}
	}*/
	public static int getInt(HttpServletRequest request,String paramName,int defaultInt){
		try{
			String tem = getString(request,paramName);
			if(tem == null){
				return defaultInt;
			} else{
				return Integer.parseInt(tem);
			}
		} catch(NumberFormatException e){
			return defaultInt;
		}
	}
	public static short getShort(HttpServletRequest request, String paramName) {
		return Short.parseShort(getString(request,paramName));
	}
	
	public static short getShort(HttpServletRequest request, String paramName, short defaultShort) {
		try {
			String temp = getString(request, paramName);

			if (temp == null)
				return defaultShort;
			else
				return Short.parseShort(temp);

		} catch (NumberFormatException e) {
			return defaultShort;
		}
	}
	/**
	 * liu added  2007.07.15
	 */
	
	public static Float getFloat(HttpServletRequest request, String paramName) throws NumberFormatException {
		return Float.parseFloat(getString(request, paramName));
	}
	public static Float getFloat(HttpServletRequest request, String paramName, Float defaultFloat) {
		try {
			String temp = getString(request, paramName);

			if (temp == null)
				return defaultFloat;
			else
				return Float.parseFloat(temp);

		} catch (NumberFormatException e) {
			return defaultFloat;
		}
	}
	
	
	
	/**
	 * 根据给定的月日年的参数，返回java.sql.Date的对象值
	 * @param request
	 * @param year
	 * @param month
	 * @param day
	 * @return
	 */
	public static Date getDate(HttpServletRequest request,String year,String month,String day){
		String birthday = ParamUtil.getString(request,year,"1900").trim()+"-"
		  + ParamUtil.getString(request,month,"1").trim()+"-"
		  + ParamUtil.getString(request,day,"1").trim();
		return Date.valueOf(birthday);
	}
	/**
	 * 返回复选框的值
	 * @param request
	 * @param paramName
	 * @return
	 */
	public static String [] getStringArray(HttpServletRequest request, String paramName){
		String []str_array = request.getParameterValues(paramName);
		if (str_array == null)
			return new String[0];
		return str_array;
	}
	public static int [] getIntArray(HttpServletRequest request, String paramName){
		String []str_array = getStringArray(request,paramName);
		int []x = new int[str_array.length];
		for (int i = 0; i < x.length; i++) {
			x[i] = Integer.parseInt(str_array[i]);
		}
		return x;
	}
	
	/**
	 * 显示的时候还原字符
	 * @param str
	 * @return
	 */
	public static String showString(String str)
	{
		String amp=str;
		
		/*
		//格式字符过滤（空格、回车）
		if(amp!=null && !amp.equals(""))
			amp=amp.trim();
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("<br>", "\n");		
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("&nbsp;", " ");
		*/
		
		//非法字符过滤
		if(amp!=null && !amp.equals(""))
		  amp=amp.replaceAll("&amp;", "&");
		if(amp!=null && !amp.equals(""))
		  amp=amp.replaceAll("&lt;", "<");
		if(amp!=null && !amp.equals(""))
		  amp=amp.replaceAll("&gt;", ">");
		if(amp!=null && !amp.equals(""))
		  amp=amp.replaceAll("&#61;", "=");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("&#37;", "%");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("lik&#101;", "like");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("&#47;", "/");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("&#39;", "'");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("&#34;", "\"");		
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("sel&#101;ct", "select");		
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("jo&#105;n", "join");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("un&#105;on", "union");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("wh&#101;re", "where");		
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("ins&#101;rt", "insert");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("del&#101;te", "delete");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("up&#100;ate", "update");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("dro&#112;", "drop");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("cr&#101;ate", "create");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("mod&#105;fy", "modify");		
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("ren&#097;me", "rename");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("alt&#101;r", "alter");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("ca&#115;t;", "cast");
		return amp;
	}
	/**
	 *对字符串进行非法字符处理
	 *@param str
	 */
	public static String checkString(String str){
		String amp=str;
		
		/*
		//格式字符过滤（空格、回车）
		if(amp!=null && !amp.equals(""))
			amp=amp.trim();
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("\r\n", "<br>");	
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("\n", "<br>");	
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("\r", "<br>");	
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll(" ", "&nbsp;");
		*/
		
		//非法字符过滤
		if(amp!=null && !amp.equals(""))
		  amp=amp.replaceAll("&", "&amp;");
		if(amp!=null && !amp.equals(""))
		  amp=amp.replaceAll("<", "&lt;");
		if(amp!=null && !amp.equals(""))
		  amp=amp.replaceAll(">", "&gt;");
		if(amp!=null && !amp.equals(""))
		  amp=amp.replaceAll("=", "&#61;");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("%", "&#37;");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("like", "lik&#101;");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("/", "&#47;");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("'", "&#39;");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("\"", "&#34;");		
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("select", "sel&#101;ct");		
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("join", "jo&#105;n");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("union", "un&#105;on");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("where", "wh&#101;re");		
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("insert", "ins&#101;rt");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("delete", "del&#101;te");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("update", "up&#100;ate");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("drop", "dro&#112;");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("create", "cr&#101;ate");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("modify", "mod&#105;fy");		
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("rename", "ren&#097;me");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("alter", "alt&#101;r");
		if(amp!=null && !amp.equals(""))
			  amp=amp.replaceAll("cast", "ca&#115;t");
		return amp;
	}
	
	public static void main(String args[])
	{
		/*
		String str  = "我\\r\\n你";
		System.out.println(str);
		if(str.indexOf('\n')>0)
			System.out.println(str);
		*/
		//ZizhuStudentAssess zstudenta =ZizhuStudentAssessManage.findRecord(10660);
		//showCheckString(zstudenta.getApply_reason());
	}
}
